/*************************************************************************
*                              起源太空
*
*------------------------------------------------------------------------
* 文件名：		fpga_reg.h
* 使用说明：	用于fpga的寄存器读写
*------------------------------------------------------------------------
* 日期： 		2022.10.28
* 版本： 		V0.0
* 作者：		张海峰
*------------------------------------------------------------------------
* 					修改 / 更新记录
*------------------------------------------------------------------------
* 日期： 		2022.11.04
* 版本： 		V0.1
* 修改人：		XXX
* 修改内容：	1.添加了XXX XXX 功能
*           2.修改了XXX XXX 的错误
*------------------------------------------------------------------------
* 日期： 		xxxx.xx.xx
* 版本： 		V0.2
* 修改人：		XXX
* 修改内容：	1.添加了XXX XXX 功能
*           2.修改了XXX XXX 的错误
*************************************************************************/


/************************************************************************
*                           注意事项
*************************************************************************
*  	2022.11.04
*  	寄存器中有只读寄存器和只写寄存器，只写寄存器读的时候返回值为0，具体的说明参见相关文档
*
*************************************************************************/

#ifndef SRC_PL_COMM_FPGA_REG_H_
#define SRC_PL_COMM_FPGA_REG_H_


/*************************************************************************
*                           全局变量 \ 引用
*************************************************************************/
#include "xil_io.h"


/*************************************************************************
*                               宏定义
*************************************************************************/
#define ENABLE  							0x01
#define DISABLE  							0x00

/* 电机的序号  */
#define MOTOR_ONE  							1
#define MOTOR_TWO  							2

/* 电机寄存器的高低电平  */
#define MOTOR_START_ON  					1
#define MOTOR_START_OFF  					0


#define TEMP_PL								0x00FFA50C00

#define CAM1GNC_BASEADDR					   0x1F600000
#define CAM2GNC_BASEADDR					   0x2F600000

#define CAMCALIDATALEN						   123302400  //定义平场、暗场、LED数据字节大小
#define CAM1_PS2PL_DARK_BASEADDR					   0x10000000
#define CAM2_PS2PL_DARK_BASEADDR					   0x20000000
#define CAM1_PS2PL_FLAT_BASEADDR					   0x18000000
#define CAM2_PS2PL_FLAT_BASEADDR					   0x28000000
#define CAM1_LED_BASEADDR							   0x60000000


#define CAM1_PL2PS_DARK_BASEADDR					   0x38000000
#define CAM2_PL2PS_DARK_BASEADDR					   0x50000000
#define CAM1_PL2PS_FLAT_BASEADDR					   0x38000000
#define CAM2_PL2PS_FLAT_BASEADDR					   0x50000000
#define CAM1MASK_BASEADDR                   0x17600000  //相机1坏点Mask
#define CAM2MASK_BASEADDR                   0x27600000  //相机2坏点Mask
#define CAM2_LED_BASEADDR							   0x68000000


/* FPGA寄存器基地址  */
#define FPGA_REG_BASEADDR  					0x80020000

#define CAM1DARK_STATE						FPGA_REG_BASEADDR+0x3EC
#define CAM1FLAT_STATE						FPGA_REG_BASEADDR+0x3F0
#define CAM2DARK_STATE						FPGA_REG_BASEADDR+0x414
#define CAM2FLAT_STATE						FPGA_REG_BASEADDR+0x418

/* FPGA时钟锁定状态   */
#define FPGA_TIME_LOCKED					FPGA_REG_BASEADDR+0x004

/* LED1定标板开关   */
#define LED1_SWITCH                         FPGA_REG_BASEADDR+0x020
/* LED1控制设置使能   */
#define LED1_ENABLE                         FPGA_REG_BASEADDR+0x024
/* LED1占空比计数值   */
#define LED1_PWM                            FPGA_REG_BASEADDR+0x028
/* LED1 PWM周期数   */
#define LED1_PWM_CYCLE                      FPGA_REG_BASEADDR+0x02C

/* 时间调整使能   */
#define TIME_ENABLE							FPGA_REG_BASEADDR+0x040
/* 时钟模块秒级参数输入寄存器   */
#define TIME_INPUT							FPGA_REG_BASEADDR+0x044
/* 时钟模块秒时间输出寄存器   */
#define TIME_SECOND_OUTPUT					FPGA_REG_BASEADDR+0x050
/* 时钟模块毫秒时间输出寄存器   */
#define TIME_MSECOND_OUTPUT				    FPGA_REG_BASEADDR+0x054
/* 时钟模块状态寄存器  */
#define TIME_STATUS					        FPGA_REG_BASEADDR+0x058

/* 电机0启动   */
#define MOTOR_0_START						FPGA_REG_BASEADDR+0x060
/* 电机1启动   */
#define MOTOR_1_START						FPGA_REG_BASEADDR+0x064
/* 电机0转动方向   */
#define MOTOR_0_DIRECTION					FPGA_REG_BASEADDR+0x068
/* 电机1转动方向   */
#define MOTOR_1_DIRECTION					FPGA_REG_BASEADDR+0x06C
/* 电机0转动步数   */
#define MOTOR_0_STEPS						FPGA_REG_BASEADDR+0x070
/* 电机1转动步数   */
#define MOTOR_1_STEPS						FPGA_REG_BASEADDR+0x074

/* 相机0 PL实际收到的张数   */
#define CAMERA_0_PL_RECV_NUM				FPGA_REG_BASEADDR+0x0DC
/* 相机0 PL已处理的图像张数   */
#define CAMERA_0_PL_FINISH_NUM				FPGA_REG_BASEADDR+0x258
/* 相机0 PL发现动目标数量   */
#define CAMERA_0_PL_OBJ_NUM					FPGA_REG_BASEADDR+0x25C
/* 相机0 当前DDR存储图像的数量   */
#define CAMERA_0_DDR_PIC_NUM				FPGA_REG_BASEADDR+0x208
/* 相机0 LVDS读走的图像张数   */
#define CAMERA_0_LVDS_SEND_NUM				FPGA_REG_BASEADDR+0x20C
/* 相机0 工作模式  */
#define CAMERA_0_WORK_MODE					FPGA_REG_BASEADDR+0x0E0
/* 相机0 曝光时间  */
#define CAMERA_0_EXPOSURE					FPGA_REG_BASEADDR+0x0E4
/* 相机0 拍摄张数  */
#define CAMERA_0_PIC_NUM					FPGA_REG_BASEADDR+0x0E8
/* 相机0 初始化状态  */
#define CAMERA_0_INIT_STATUS				FPGA_REG_BASEADDR+0x0EC
/* 相机0 每张图3C的个数  */
#define CAMERA_0_EACHPIC_3C_NUM				FPGA_REG_BASEADDR+0x0F0
/* 相机0 增益  */
#define CAMERA_0_GAIN						FPGA_REG_BASEADDR+0x0F4
/* 相机0 连拍间隔时间  */
#define CAMERA_0_SHOT_TIME_LAPSE			FPGA_REG_BASEADDR+0x0F8
/* 相机0 开始拍照  */
#define CAMERA_0_START_SHOT					FPGA_REG_BASEADDR+0x0FC
/* LVDS接口送走的总包数，一直累加，不清零 */
#define CAMERA_LVDS_PACK_NUM				FPGA_REG_BASEADDR+0x438

/*CMA-1预处理模式的参数*/
#define Cam0_Flat_Dark_process_en               FPGA_REG_BASEADDR+0x280
#define Cam0_block_size_0                       FPGA_REG_BASEADDR+0x284
#define Cam0_block_size_1                       FPGA_REG_BASEADDR+0x288
#define Cam0_blcok0_Nmax0                       FPGA_REG_BASEADDR+0x28C
#define Cam0_blcok1_Nmax1                       FPGA_REG_BASEADDR+0x290
#define Cam0_blcok_Nmin                         FPGA_REG_BASEADDR+0x294
#define Cam0_corner_cnt                         FPGA_REG_BASEADDR+0x298
#define Cam0_atomosphere_thresh                 FPGA_REG_BASEADDR+0x29C
#define Cam0_max_cfs_npix                       FPGA_REG_BASEADDR+0x2A0
#define Cam0_binarized_thresh                   FPGA_REG_BASEADDR+0x2A4
#define Cam0_saturated_thresh                   FPGA_REG_BASEADDR+0x2A8
#define Cam0_object_thresh                      FPGA_REG_BASEADDR+0x2AC
#define Cam0_min_streak_npix                    FPGA_REG_BASEADDR+0x2B0
#define Cam0_max_streak_npix                    FPGA_REG_BASEADDR+0x2B4
#define Cam0_porosity_grade                     FPGA_REG_BASEADDR+0x2B8
#define Cam0_Target_detection_num               FPGA_REG_BASEADDR+0x2BC
#define Cam0_sub_filtering_en                   FPGA_REG_BASEADDR+0x2C0
#define Cam0_atomosphere_mask_en                FPGA_REG_BASEADDR+0x2C4
#define Cam0_fill_defect_mask_en                FPGA_REG_BASEADDR+0x2C8
#define Cam0_bright_region_thresh               FPGA_REG_BASEADDR+0x2CC
#define Cam0_flat_dark_dn_offset				FPGA_REG_BASEADDR+0x2D0
#define Cam0_scale_factor						FPGA_REG_BASEADDR+0x2D4
#define Cam0_length_width_ratio					FPGA_REG_BASEADDR+0x2D8
#define Cam0_corr_coef_thresh0					FPGA_REG_BASEADDR+0x2DC
#define Cam0_corr_coef_thresh1					FPGA_REG_BASEADDR+0x2E0

#define Cam0_3sita_value                        FPGA_REG_BASEADDR+0x3E8
#define Cam0_cali_norm_value                    FPGA_REG_BASEADDR+0x3F4

#define Cam0_pl_run_status                    	FPGA_REG_BASEADDR+0x260

/*CMA-2预处理模式的参数*/
#define Cam1_Flat_Dark_process_en               FPGA_REG_BASEADDR+0x348
#define Cam1_block_size_0                       FPGA_REG_BASEADDR+0x34C
#define Cam1_block_size_1                       FPGA_REG_BASEADDR+0x350
#define Cam1_blcok0_Nmax0                       FPGA_REG_BASEADDR+0x354
#define Cam1_blcok1_Nmax1                       FPGA_REG_BASEADDR+0x358
#define Cam1_blcok_Nmin                         FPGA_REG_BASEADDR+0x35C
#define Cam1_corner_cnt                         FPGA_REG_BASEADDR+0x360
#define Cam1_atomosphere_thresh                 FPGA_REG_BASEADDR+0x364
#define Cam1_max_cfs_npix                       FPGA_REG_BASEADDR+0x368
#define Cam1_binarized_thresh                   FPGA_REG_BASEADDR+0x36C
#define Cam1_saturated_thresh                   FPGA_REG_BASEADDR+0x370
#define Cam1_object_thresh                      FPGA_REG_BASEADDR+0x374
#define Cam1_min_streak_npix                    FPGA_REG_BASEADDR+0x378
#define Cam1_max_streak_npix                    FPGA_REG_BASEADDR+0x37C
#define Cam1_porosity_grade                     FPGA_REG_BASEADDR+0x380
#define Cam1_Target_detection_num               FPGA_REG_BASEADDR+0x384
#define Cam1_sub_filtering_en                   FPGA_REG_BASEADDR+0x388
#define Cam1_atomosphere_mask_en                FPGA_REG_BASEADDR+0x38C
#define Cam1_fill_defect_mask_en                FPGA_REG_BASEADDR+0x390
#define Cam1_bright_region_thresh               FPGA_REG_BASEADDR+0x394
#define Cam1_flat_dark_dn_offset				FPGA_REG_BASEADDR+0x398
#define Cam1_scale_factor						FPGA_REG_BASEADDR+0x39C
#define Cam1_length_width_ratio					FPGA_REG_BASEADDR+0x3A0
#define Cam1_corr_coef_thresh0					FPGA_REG_BASEADDR+0x3A4
#define Cam1_corr_coef_thresh1					FPGA_REG_BASEADDR+0x3A8

#define Cam1_3sita_value                        FPGA_REG_BASEADDR+0x410
#define Cam1_cali_norm_value                    FPGA_REG_BASEADDR+0x41C

#define Cam1_pl_run_status                    	FPGA_REG_BASEADDR+0x328

/* 相机1 PL实际收到的张数   */
#define CAMERA_1_PL_RECV_NUM				FPGA_REG_BASEADDR+0x17C
/* 相机1 PL已处理的图像张数   */
#define CAMERA_1_PL_FINISH_NUM				FPGA_REG_BASEADDR+0x320
/* 相机1 PL发现动目标数量   */
#define CAMERA_1_PL_OBJ_NUM					FPGA_REG_BASEADDR+0x324
/* 相机1 当前DDR存储图像的数量   */
#define CAMERA_1_DDR_PIC_NUM				FPGA_REG_BASEADDR+0x230
/* 相机1 LVDS读走的图像张数   */
#define CAMERA_1_LVDS_SEND_NUM				FPGA_REG_BASEADDR+0x234
/* 相机1 工作模式  */
#define CAMERA_1_WORK_MODE					FPGA_REG_BASEADDR+0x180
/* 相机1 曝光时间  */
#define CAMERA_1_EXPOSURE					FPGA_REG_BASEADDR+0x184
/* 相机1 拍摄张数  */
#define CAMERA_1_PIC_NUM					FPGA_REG_BASEADDR+0x188
/* 相机1 每张图3C的个数  */
#define CAMERA_1_EACHPIC_3C_NUM				FPGA_REG_BASEADDR+0x190
/* 相机1 增益  */
#define CAMERA_1_GAIN						FPGA_REG_BASEADDR+0x194
/* 相机1 连拍间隔时间  */
#define CAMERA_1_SHOT_TIME_LAPSE			FPGA_REG_BASEADDR+0x198
/* 相机1 开始拍照  */
#define CAMERA_1_START_SHOT					FPGA_REG_BASEADDR+0x19C

/* 热刀1 */
#define HOT_KNIFE_0							FPGA_REG_BASEADDR+0x1D0
/* 热刀2 */
#define HOT_KNIFE_1							FPGA_REG_BASEADDR+0x1D4


#endif



